%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Slides
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
	\titlepage
\end{frame}

\begin{frame}{Roteiro}
	%\scalebox{0.8}{\vbox{\tableofcontents}}
  %	\tableofcontents[]
  	\tiny{\tableofcontents}
\end{frame}

\section{Contextualização}
	\begin{frame}
	\frametitle{Contextualização}
 	\begin{itemize}
		\item Em 2009:
		\begin{itemize}
			\item Arquitetura de federação em nuvens BioNimbus, proposta por Hugo Saldanha
				para aplicações em um ambiente de nuvens;
			\item Utilizava estrutura de comunicação e transferência de arquivos por meio do
				protocolo P2P;
			\item Não possuia política de armazenamento de dados.		
		\end{itemize}
\item Atualmente:
\begin{itemize}
\item Integram-se o SFTP, ZooKeeper Apache e Avro Apache a arquitetura, para a
transferência de arquivos, coordenação e comunicação dos servidores envolvidos.
\item Implementação da política de armazenamento, ZooClouS, que obtêm o melhor
servidor para o armazenamento de um dado.
		\end{itemize}
	  \end{itemize}
	\end{frame}

	\begin{frame}
	  \frametitle{Motivação}
	  \begin{center}
		Criar uma política de armazenamento que melhore o desempenho na arquitetura de nuvens federadas. 	
	  \end{center}
\end{frame}

	\begin{frame}
	  \frametitle{Problema}
	  \begin{itemize}
		  \item Não existe uma política de armazenamento de dados para o BioNimbus.
		  \item O BioNimbus precisa de uma política de armazenamento para realizar
		  		operações com os seus dados, tais como redundância, replicação, backups, etc.
	  \end{itemize}
	\end{frame}
	

		\begin{frame}
	  \frametitle{Hipótese}
	  \begin{center}
	  	Conseguir melhor desempenho em armazenamento de dados no BioNimbus.
	  \end{center}
	\end{frame}
	
		\begin{frame}
		  \frametitle{Objetivo Principal}
		  \begin{center}
		 		Implementar uma política de armazenamento de dados para o BioNimbus.
		  \end{center}
		\end{frame}
		
\begin{frame}
		  \frametitle{Objetivos Específicos} 
		  \begin{itemize}
\item Implementar a execução de backups e tolerância a falhas na
arquitetura.
\item Implementar uma política de armazenamento de dados para determinar o
melhor servidor da federação para receber um dado.
\item Realizar testes com dados utilizados por aplicações de bioinformática.
		  \end{itemize}
\end{frame}
		

\section{Computação em Nuvem}

	\subsection{Computação em Nuvem}
		\begin{frame}
		  \frametitle{Computação em Nuvem}
		  \begin{itemize}
			\item Computação em Nuvem refere-se ao uso de memória e das capacidades de
			armazenamento de servidores e computadores compartilhados e interligados através
			da Internet.
			\item Exemplos de Provedores de Nuvens: Microsoft Azure, Google App Engine,
			Amazon SimpleDB.
		  \end{itemize}
		\end{frame}

	\subsection{Federação de Nuvens}
		\begin{frame}
		  \frametitle{Federação de Nuvens}
		  \begin{itemize}
			\item Uma Federação consiste em um grupo de nuvens, como uma nuvem possui
			recursos limitados, o objetivo da Federação é passar para o usuário a idéia de
			que os recursos são ilimitados.
		  \end{itemize}
		\end{frame}

\section{A Política de Armazenamento ZooClouS}
\begin{frame}{ZooKeeper Apache}
	\begin{itemize}
	  \item Serviço de coordenação de dados;
	  \item {\it ZNodes} e {\it Watchers};
	  \item {\it ZNodes} persistentes e {\it Znodes} efêmeros.
	\end{itemize}
\end{frame}

\begin{frame}{Integração com o ZooKeeper}
	\begin{figure}
		\centering
		\includegraphics[width=8cm, height=6cm]{zookeeper-storage.jpg}
		\caption{Estrutura do ZooKeeper no ZooNimbus com Relação ao Serviço de
		Armazenamento.}
		\label{fig:storage}
	\end{figure}	
\end{frame}

\begin{frame}{Avro Apache}
	\begin{itemize}
	  \item Formato compacto e rápido de dados binários;
	  \item Chamada remota de procedimentos(RPC);
	  \item Comunicação entre os computadores envolvidos;
	  \item Integração simples com linguagens dinâmicas.
	\end{itemize}
\end{frame}

\begin{frame}{Integração com o Avro}
	\begin{figure}[H]
	\centering 
	\includegraphics[width=8cm,height=5cm]{avro.jpg}\\
	\caption{Chamadas RPC Passo-a-Passo.}
	\label{fig:avro_rpc}
	\end{figure}
\end{frame}

\begin{frame}{ZooNimbus}
	\begin{figure}
		\centering
		\includegraphics[width=7cm, height=6cm]{zoonimbus.jpg}\\
		\caption{Arquitetura de Federação em Nuvens ZooNimbus.}
	\end{figure}
\end{frame}

\begin{frame}{\it Storage Service}
Com o objetivo de otimizar o controle dos dados e o seu tratamento dentro de um
ambiente de federação de nuvens, o {\it Storage Service} conta com os serviços:
\begin{itemize}
  \item Listagem de todos os arquivos encontrados na federação;
  \item {\it Upload} de arquivos para a federação.
  \item {\it Download} de arquivos para o computador do cliente
  ou para um servidor.
  \item Replicação de todos os arquivos contidos na federação;
  \item Tolerância a falhas.
\end{itemize}
\end{frame}

\begin{frame}{Listagem}
\begin{figure}
		\centering
		\includegraphics[width=8cm, height=5cm]{casodeusolistagem.jpeg}
		\caption{Serviço de Listagem de Arquivos.}
\end{figure}
\end{frame}

\begin{frame}{\it Upload}
\begin{figure}
		\centering
		\includegraphics[width=8cm, height=5cm]{casodeuso-upload.jpeg}
		\caption{Serviço de {\it Upload} de arquivos.}
\end{figure}
\end{frame}

\begin{frame}{\it Download}
\begin{figure}
		\centering
		\includegraphics[width=8cm, height=5cm]{casodeusodownload.jpeg}
		\caption{Serviço de {\it Download} de arquivos.}
\end{figure}
\end{frame}

\begin{frame}{Replicação de Dados}
\begin{figure}
		\centering
		\includegraphics[width=8cm, height=5cm]{casodeuso-replicacao.jpeg}
		\caption{Serviço de Replicacão de arquivos.}
\end{figure}
\end{frame}

\begin{frame}{Tolerância a Falhas}
\begin{figure}
		\centering
		\includegraphics[width=8cm, height=5cm]{casodeuso-tolerancia.jpeg}
		\caption{Serviço de Tolerância a Falhas.}
\end{figure}
\end{frame}
	
\begin{frame}{Política de Armazenamento ZooClouS}
	\begin{itemize}
	  \item Baseado no Algoritmo A*;
	  \item Dados utilizados para o cálculo:
	  		\begin{itemize}
	  		  \item  Latência;
	  		  \item {\it Uptime};
	  		  \item Espaço livre em disco;
	  		\end{itemize}
	\end{itemize}
\end{frame}

\begin{frame}{Custo de Armazenamento}
Primeira parte do cálculo do custo de armazenamento:
\begin{equation}
S = ((U * \gamma + F * \beta) * (L * \alpha))
\end{equation}
\begin{itemize}
  \item $\alpha$ : 0.5;
  \item $\beta$ : 0.2;
  \item $\gamma$ : 0.3.
\end{itemize}
\end{frame}
\begin{frame}{Custo de Armazenamento}
Equação completa do custo de armazenamento:
\begin{equation}
S = ((U * \gamma + F * \beta) * (L * \alpha)) + Costs
\end{equation}
\end{frame}
	
\section{Resultados}
	\begin{frame}
	\frametitle{Resultados}
	  \begin{figure}
		\centering
		\includegraphics[width=9cm, height=4cm]{escolhadestino.jpg}
		\caption{Escolha do Servidor de Destino Realizada pela ZooClouS.}
\end{figure}
\end{frame}

	\begin{frame}
		\frametitle{Resultados}
		  \begin{figure}
			\centering
			\includegraphics[width=9cm, height=4cm]{tempomedio.jpg}
			\caption{Tempo de Transferência Realizada pela ZooClouS.}
		 \end{figure}
	\end{frame}
	\begin{frame}
		\frametitle{Resultados}
		  \begin{figure}
			\centering
			\includegraphics[width=9cm, height=4cm]{pipeline.jpg}
			\caption{Execução de Tarefas no ZooNimbus.}
		 \end{figure}
	\end{frame}
	\begin{frame}
	\frametitle{Trabalhos Futuros}
		\begin{itemize}
		  \item Lista de controle de acesso (ACL);
		  \item Protocolo de Tranferência de Arquivos Paralelos ({\it Parallelized
		  File Transfer Protocol - P-FTP});
		  \item Interface de Gerenciamento de Dados em Nuvem ({\it Cloud Data Manage
		  Interface - CDMI});
		  \item Automatizar o cálculo do custo de armazenagem de acordo com o
		  tamanho do arquivo;
		  \item Política que resolva a escolha da melhor forma de se transferir o
		  arquivo.
		\end{itemize}
	\end{frame}
	
	\begin{frame}
	  \frametitle{Obrigado!!}
	  \begin{center}
	    {\Huge Obrigado!!}
	  \end{center}
	  \begin{center}
	  \textit{\{dericlima, mourabreno\}@gmail.com}
	  \end{center}
	\end{frame}

	\begin{frame}[allowframebreaks]
	  \frametitle{Referências Bibliográficas}
	  \begin{itemize}
		
		\item R. Buyya, R. Ranjan, and R. N. Calheiros. Intercloud: utility-oriented
		federation of cloud computing environments for scaling of application services.
		In Proceedings of the 10th international conference on Algorithms and
		Architectures for Parallel Pro- cessing - Volume Part I, ICA3PP'10, pages 13-31,
		Berlin, Heidelberg, 2010. Springer- Verlag.
		
		\item A. Celesti, F. Tusa, M. Villari, and A. Puliafito. How to enhance cloud
		architec- tures to enable cross-federation. In Cloud Computing (CLOUD), 2010
		IEEE 3rd International Conference on, pages 337-345, jul. 2010.	
	
		\item B.P. Rimal, C. Eunmi, and I. Lumb. A taxonomy and survey of cloud
		computing systems. In INC, IMS and IDC, 2009. NCM '09. Fifth International Joint
		Conference on, pages 44-51, aug. 2009.
		
		\item H. V. Saldanha. Bionimbus: uma arquitetura de federação de nuvens
		computacionais híbrida para a execução de workflows de bioinformática. Master's
		thesis, Departamento de Ciência de Computação, Universidade de Brasília, 2012.
		
		\item ZooKeeper Apache, http://zookeeper.apache.org/, Apache Software Foundation, 2010.
		
		\item Avro Apache, http://avro.apache.org/, Apache Software Foundation, 2010.
		
		\item I. Foster, Z. Yong, I. Raicu, and S. Lu. Cloud computing and grid
		computing 360- degree compared. In Grid Computing Environments Workshop, 2008.
		GCE '08, pages 1-10, nov. 2008.

		\item R. Buyya, C. S. Yeo, S. Venugopal, J. Broberg, and I. Brandic. Cloud
		computing and emerging it platforms: Vision, hype, and reality for delivering
		computing as the 5th utility. Future Gener. Comput. Syst., 25(6):599-616, jun.
		2009.

	  \end{itemize}

	\end{frame}